{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "47f3874e7a51d5f2",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:15.414144600Z",
     "start_time": "2024-04-15T12:48:15.332579300Z"
    }
   },
   "outputs": [],
   "source": [
    "'''导入数据分析相关库'''\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "'''导入xgboost和随机搜索相关库'''\n",
    "import xgboost as xgb\n",
    "'''导入时间库'''\n",
    "import time"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:15.418953800Z",
     "start_time": "2024-04-15T12:48:15.383449800Z"
    }
   },
   "outputs": [],
   "source": [
    "'''导入当前文件下的train.csv和test.csv文件'''\n",
    "df = pd.read_csv('Share_Bike_Data\\\\train.csv')\n",
    "df_test = pd.read_csv('Share_Bike_Data\\\\test.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "f956098aba4e57a2",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:15.433488600Z",
     "start_time": "2024-04-15T12:48:15.421961900Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 8000 entries, 0 to 7999\n",
      "Data columns (total 9 columns):\n",
      " #   Column      Non-Null Count  Dtype  \n",
      "---  ------      --------------  -----  \n",
      " 0   id          8000 non-null   int64  \n",
      " 1   city        8000 non-null   int64  \n",
      " 2   hour        8000 non-null   int64  \n",
      " 3   is_workday  8000 non-null   int64  \n",
      " 4   weather     8000 non-null   int64  \n",
      " 5   temp_1      8000 non-null   float64\n",
      " 6   temp_2      8000 non-null   float64\n",
      " 7   wind        8000 non-null   int64  \n",
      " 8   y           8000 non-null   int64  \n",
      "dtypes: float64(2), int64(7)\n",
      "memory usage: 562.6 KB\n"
     ]
    }
   ],
   "source": [
    "'''查看训练集的相关信息'''\n",
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "d16fe0614b2819f9",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:15.492140700Z",
     "start_time": "2024-04-15T12:48:15.434997800Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "               id         city         hour   is_workday      weather  \\\ncount  8000.00000  8000.000000  8000.000000  8000.000000  8000.000000   \nmean   4000.50000     0.498250    11.459875     0.681375     1.428375   \nstd    2309.54541     0.500028     6.908951     0.465972     0.638491   \nmin       1.00000     0.000000     0.000000     0.000000     1.000000   \n25%    2000.75000     0.000000     6.000000     0.000000     1.000000   \n50%    4000.50000     0.000000    11.000000     1.000000     1.000000   \n75%    6000.25000     1.000000    17.000000     1.000000     2.000000   \nmax    8000.00000     1.000000    23.000000     1.000000     4.000000   \n\n            temp_1       temp_2         wind            y  \ncount  8000.000000  8000.000000  8000.000000  8000.000000  \nmean     15.301737    15.366675     1.253875    50.650875  \nstd       9.008984    11.276900     1.097417    47.759631  \nmin      -7.600000   -15.600000     0.000000     0.000000  \n25%       7.800000     5.900000     0.000000    10.000000  \n50%      15.600000    16.100000     1.000000    39.000000  \n75%      22.500000    24.800000     2.000000    75.000000  \nmax      37.200000    46.800000     7.000000   249.000000  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>city</th>\n      <th>hour</th>\n      <th>is_workday</th>\n      <th>weather</th>\n      <th>temp_1</th>\n      <th>temp_2</th>\n      <th>wind</th>\n      <th>y</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>count</th>\n      <td>8000.00000</td>\n      <td>8000.000000</td>\n      <td>8000.000000</td>\n      <td>8000.000000</td>\n      <td>8000.000000</td>\n      <td>8000.000000</td>\n      <td>8000.000000</td>\n      <td>8000.000000</td>\n      <td>8000.000000</td>\n    </tr>\n    <tr>\n      <th>mean</th>\n      <td>4000.50000</td>\n      <td>0.498250</td>\n      <td>11.459875</td>\n      <td>0.681375</td>\n      <td>1.428375</td>\n      <td>15.301737</td>\n      <td>15.366675</td>\n      <td>1.253875</td>\n      <td>50.650875</td>\n    </tr>\n    <tr>\n      <th>std</th>\n      <td>2309.54541</td>\n      <td>0.500028</td>\n      <td>6.908951</td>\n      <td>0.465972</td>\n      <td>0.638491</td>\n      <td>9.008984</td>\n      <td>11.276900</td>\n      <td>1.097417</td>\n      <td>47.759631</td>\n    </tr>\n    <tr>\n      <th>min</th>\n      <td>1.00000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>1.000000</td>\n      <td>-7.600000</td>\n      <td>-15.600000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n    </tr>\n    <tr>\n      <th>25%</th>\n      <td>2000.75000</td>\n      <td>0.000000</td>\n      <td>6.000000</td>\n      <td>0.000000</td>\n      <td>1.000000</td>\n      <td>7.800000</td>\n      <td>5.900000</td>\n      <td>0.000000</td>\n      <td>10.000000</td>\n    </tr>\n    <tr>\n      <th>50%</th>\n      <td>4000.50000</td>\n      <td>0.000000</td>\n      <td>11.000000</td>\n      <td>1.000000</td>\n      <td>1.000000</td>\n      <td>15.600000</td>\n      <td>16.100000</td>\n      <td>1.000000</td>\n      <td>39.000000</td>\n    </tr>\n    <tr>\n      <th>75%</th>\n      <td>6000.25000</td>\n      <td>1.000000</td>\n      <td>17.000000</td>\n      <td>1.000000</td>\n      <td>2.000000</td>\n      <td>22.500000</td>\n      <td>24.800000</td>\n      <td>2.000000</td>\n      <td>75.000000</td>\n    </tr>\n    <tr>\n      <th>max</th>\n      <td>8000.00000</td>\n      <td>1.000000</td>\n      <td>23.000000</td>\n      <td>1.000000</td>\n      <td>4.000000</td>\n      <td>37.200000</td>\n      <td>46.800000</td>\n      <td>7.000000</td>\n      <td>249.000000</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''查看训练集的基本统计量'''\n",
    "df.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "source": [],
   "metadata": {
    "collapsed": false
   },
   "id": "b77f9eddd40c9ef"
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "746f15ee743fac8e",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:15.511774100Z",
     "start_time": "2024-04-15T12:48:15.458099900Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "   id  city  hour  is_workday  weather  temp_1  temp_2  wind   y\n0   1     0    22           1        2     3.0     0.7     0  15\n1   2     0    10           1        1    21.0    24.9     3  48\n2   3     0     0           1        1    25.3    27.4     0  21\n3   4     0     7           0        1    15.7    16.2     0  11\n4   5     1    10           1        1    21.1    25.0     2  39",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>city</th>\n      <th>hour</th>\n      <th>is_workday</th>\n      <th>weather</th>\n      <th>temp_1</th>\n      <th>temp_2</th>\n      <th>wind</th>\n      <th>y</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>1</td>\n      <td>0</td>\n      <td>22</td>\n      <td>1</td>\n      <td>2</td>\n      <td>3.0</td>\n      <td>0.7</td>\n      <td>0</td>\n      <td>15</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>2</td>\n      <td>0</td>\n      <td>10</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21.0</td>\n      <td>24.9</td>\n      <td>3</td>\n      <td>48</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>3</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>25.3</td>\n      <td>27.4</td>\n      <td>0</td>\n      <td>21</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>4</td>\n      <td>0</td>\n      <td>7</td>\n      <td>0</td>\n      <td>1</td>\n      <td>15.7</td>\n      <td>16.2</td>\n      <td>0</td>\n      <td>11</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>5</td>\n      <td>1</td>\n      <td>10</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21.1</td>\n      <td>25.0</td>\n      <td>2</td>\n      <td>39</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''打印出训练集的前5行'''\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "8a22e728e663590f",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:15.556861700Z",
     "start_time": "2024-04-15T12:48:15.495159200Z"
    }
   },
   "outputs": [],
   "source": [
    "'''删除训练集和测试集的“id”列'''\n",
    "df = df.drop('id', axis=1)\n",
    "df_test = df_test.drop('id', axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "2bbfb256447825e5",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:15.699539500Z",
     "start_time": "2024-04-15T12:48:15.558865500Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "   city  hour  is_workday  weather  temp_1  temp_2  wind   y\n0     0    22           1        2     3.0     0.7     0  15\n1     0    10           1        1    21.0    24.9     3  48\n2     0     0           1        1    25.3    27.4     0  21\n3     0     7           0        1    15.7    16.2     0  11\n4     1    10           1        1    21.1    25.0     2  39",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>city</th>\n      <th>hour</th>\n      <th>is_workday</th>\n      <th>weather</th>\n      <th>temp_1</th>\n      <th>temp_2</th>\n      <th>wind</th>\n      <th>y</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0</td>\n      <td>22</td>\n      <td>1</td>\n      <td>2</td>\n      <td>3.0</td>\n      <td>0.7</td>\n      <td>0</td>\n      <td>15</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>0</td>\n      <td>10</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21.0</td>\n      <td>24.9</td>\n      <td>3</td>\n      <td>48</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>25.3</td>\n      <td>27.4</td>\n      <td>0</td>\n      <td>21</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>0</td>\n      <td>7</td>\n      <td>0</td>\n      <td>1</td>\n      <td>15.7</td>\n      <td>16.2</td>\n      <td>0</td>\n      <td>11</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>1</td>\n      <td>10</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21.1</td>\n      <td>25.0</td>\n      <td>2</td>\n      <td>39</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''展示训练集数据'''\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "3c05fc8fd105896c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:15.818630100Z",
     "start_time": "2024-04-15T12:48:15.665154300Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "   city  hour  is_workday  weather  temp_1  temp_2  wind\n0     1    16           1        1     1.3    -2.1     1\n1     0     3           1        2     6.0     2.9     2\n2     1    21           0        2    11.9    12.2     2\n3     1    21           0        2    23.9    25.9     3\n4     0    12           1        1    18.4    19.1     1",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>city</th>\n      <th>hour</th>\n      <th>is_workday</th>\n      <th>weather</th>\n      <th>temp_1</th>\n      <th>temp_2</th>\n      <th>wind</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>1</td>\n      <td>16</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1.3</td>\n      <td>-2.1</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>0</td>\n      <td>3</td>\n      <td>1</td>\n      <td>2</td>\n      <td>6.0</td>\n      <td>2.9</td>\n      <td>2</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>1</td>\n      <td>21</td>\n      <td>0</td>\n      <td>2</td>\n      <td>11.9</td>\n      <td>12.2</td>\n      <td>2</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>1</td>\n      <td>21</td>\n      <td>0</td>\n      <td>2</td>\n      <td>23.9</td>\n      <td>25.9</td>\n      <td>3</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>0</td>\n      <td>12</td>\n      <td>1</td>\n      <td>1</td>\n      <td>18.4</td>\n      <td>19.1</td>\n      <td>1</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''展示测试集数据'''\n",
    "df_test.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "720b4506058c7342",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:15.921867Z",
     "start_time": "2024-04-15T12:48:15.820635600Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "10"
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''查看训练集是否存在重复值'''\n",
    "df.duplicated().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "6d45099337766a93",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:16.011133800Z",
     "start_time": "2024-04-15T12:48:15.893869900Z"
    }
   },
   "outputs": [],
   "source": [
    "'''删除训练集中的重复值'''\n",
    "df = df.drop_duplicates()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "da3ac93b34274103",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:16.084410100Z",
     "start_time": "2024-04-15T12:48:16.014175500Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Index: 7990 entries, 0 to 7999\n",
      "Data columns (total 8 columns):\n",
      " #   Column      Non-Null Count  Dtype  \n",
      "---  ------      --------------  -----  \n",
      " 0   city        7990 non-null   int64  \n",
      " 1   hour        7990 non-null   int64  \n",
      " 2   is_workday  7990 non-null   int64  \n",
      " 3   weather     7990 non-null   int64  \n",
      " 4   temp_1      7990 non-null   float64\n",
      " 5   temp_2      7990 non-null   float64\n",
      " 6   wind        7990 non-null   int64  \n",
      " 7   y           7990 non-null   int64  \n",
      "dtypes: float64(2), int64(6)\n",
      "memory usage: 561.8 KB\n"
     ]
    }
   ],
   "source": [
    "'''打印训练集的相关信息'''\n",
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "d2404aea9ff2674f",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:16.153507100Z",
     "start_time": "2024-04-15T12:48:16.075866900Z"
    }
   },
   "outputs": [],
   "source": [
    "'''重置训练集索引'''\n",
    "df = df.reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "f981186ca6301a8d",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:16.194211200Z",
     "start_time": "2024-04-15T12:48:16.157031400Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "   city  hour  is_workday  weather  temp_1  temp_2  wind   y\n0     0    22           1        2     3.0     0.7     0  15\n1     0    10           1        1    21.0    24.9     3  48\n2     0     0           1        1    25.3    27.4     0  21\n3     0     7           0        1    15.7    16.2     0  11\n4     1    10           1        1    21.1    25.0     2  39",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>city</th>\n      <th>hour</th>\n      <th>is_workday</th>\n      <th>weather</th>\n      <th>temp_1</th>\n      <th>temp_2</th>\n      <th>wind</th>\n      <th>y</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0</td>\n      <td>22</td>\n      <td>1</td>\n      <td>2</td>\n      <td>3.0</td>\n      <td>0.7</td>\n      <td>0</td>\n      <td>15</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>0</td>\n      <td>10</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21.0</td>\n      <td>24.9</td>\n      <td>3</td>\n      <td>48</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>25.3</td>\n      <td>27.4</td>\n      <td>0</td>\n      <td>21</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>0</td>\n      <td>7</td>\n      <td>0</td>\n      <td>1</td>\n      <td>15.7</td>\n      <td>16.2</td>\n      <td>0</td>\n      <td>11</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>1</td>\n      <td>10</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21.1</td>\n      <td>25.0</td>\n      <td>2</td>\n      <td>39</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''查看训练集数据'''\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "b67a589dbc588f29",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:16.279717500Z",
     "start_time": "2024-04-15T12:48:16.196726900Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 7990 entries, 0 to 7989\n",
      "Data columns (total 8 columns):\n",
      " #   Column      Non-Null Count  Dtype  \n",
      "---  ------      --------------  -----  \n",
      " 0   city        7990 non-null   int64  \n",
      " 1   hour        7990 non-null   int64  \n",
      " 2   is_workday  7990 non-null   int64  \n",
      " 3   weather     7990 non-null   int64  \n",
      " 4   temp_1      7990 non-null   float64\n",
      " 5   temp_2      7990 non-null   float64\n",
      " 6   wind        7990 non-null   int64  \n",
      " 7   y           7990 non-null   int64  \n",
      "dtypes: float64(2), int64(6)\n",
      "memory usage: 499.5 KB\n"
     ]
    }
   ],
   "source": [
    "'''查看训练集的相关信息'''\n",
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "10bedfe5880da383",
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:16.401980200Z",
     "start_time": "2024-04-15T12:48:16.258085100Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "'''绘制箱型图'''\n",
    "df.boxplot(column='y')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "a38bbae4515f748",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:16.473625500Z",
     "start_time": "2024-04-15T12:48:16.336489800Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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PvsMhw4dgr+/PyZMmABPT08sWbIEtra22LBhA/bt24eAgAC8/fbbePvttxEYGNhSpyciIiIJa9F5aPz9/bF9+/ZGj3l6et7zGBEREdHfwd5lREREpPeY0BAREZHea9FbTlIiM76F3LKLMCpp/tDzhzqfDLghs0RxSZnWernnlt2BzPiWdk5GRET0NzCheUgmNul4L+uQrovxyJnYDAUwUNfFICIiui8mNA+pqjgA0QOegLOd9lpobGwsUVysvRaay0V38PbFPO2cjIiI6G9gQvOQhGprOFn2gEsb7UxFLZMBDvatoRC0N1NkTUUphOrb2jkZERHR38CEhoiomXJvlqNMWa21810uql337o9C7bXQAoClqTGcbC0eHEgkAkxoiIiaIfdmOSZsyNDJuRfvPa/1c349zY9JDekFJjRERM1Q1zLzrzBXPGZnqZVzymSAzMwUQqVSay00fxSVYcne81ptiSL6O5jQEBE9hMfsLNGznRb70Dm0hkIhzdWWiZqCCQ3RQ+A8RERE4sKEhughcB4iIiJxYUJD9BA4DxERkbgwoSF6CJyHiIhIXLg4JREREek9JjRERESk95jQEBERkd5jQkNERER6jwkNERER6T0mNERERKT3mNAQERGR3mNCQ0RERHqPCQ0RERHpPSY0REREpPeY0BAREZHeY0JDREREeo8JDREREek9JjRERESk95jQEBERkd5jQkNERER6jwkNERER6T0mNERERKT3mNAQERGR3mNCQ0RERHqPCQ0RERHpPSY0REREpPeMdV0AIiJ9IzO+hdyyizAqaaWd88mAGzJLFJeUQRC0ckrklt2BzPiWdk5G1AKY0BARNZOJTTreyzqk62I8ciY2QwEM1HUxiJqECQ0RUTNVFQcgesATcLbTXguNjY0liou110JzuegO3r6Yp52TEbUAJjRERM0kVFvDybIHXNq01sr5ZDLAwb41FEKp1hKamopSCNW3tXMyohbATsFERESk95jQEBERkd5jQkNERER6j31o/obsfO3dX5bJAFlxJYRKpdbuof9RVKadExEREf1NTGgegqqmNqNY9t1FHZdEOyxN+WNCRETixk+qh+DRwRqJk/tAbiTT2jkvF5Vh8d7zWBrmCmc7S62d19LUGE62Flo7nz5hCx0RkXgwoXlIHh2stXo+2f/nTo/ZW8K1rXaGilLj2EJHRCQ+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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "'''以weather为分类标准，绘制y的箱型图 '''\n",
    "df.boxplot(column='y', by='weather')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "84a26d0d04a74674",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:16.871142600Z",
     "start_time": "2024-04-15T12:48:16.462575600Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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nSusy1LjZWn59JKOK5aYpoorlpimiiuWmKaKK5aYpopb2mPGxcWhUaMGyMnJUdkulUpx9+5DODk5GRS/tB+/qeOWdEx52aLolNBERUVh8uTJeO2113D48GE4OjoCAM6ePYvY2FgMHz5cUTYzMxPW1tYAgAYNGuDBgwcqsR4+fIg333xTl4cHoNtS46V9qXNTxjRVXLHENFVcscQ0VVyxxDRVXLHENFXc0hrT0dEJISHhePUqEZHxqVh0IgLL/Dzg6Vodjo5ORqtzaT3+4opb2mNq3Sk4MTERY8eORYsWLRAUFKRIZnIrJGDlypW4evUqBEFAeHg4du3apRjlNGTIEBw7dgwhISHIysrCjh07EBcXB19fX+McBRERlWuurnXg6dkc7o2awqpafbg3agpX1zolXS0qRlq30Bw5cgRPnz7FqVOncPr0aZV94eHhmD9/PgICAvD8+XM4Ozvj/fffR//+/QEAbdu2hb+/v2J//fr1sWXLFjg4OBj1YIiIiKh80jqhGT9+PMaPH1/g/uHDh6tccsqvf//+igSHiIiIyJi49AERERGJHhMaIiIiEj0mNERERCR6TGiIiIhI9JjQEBERkejptfQBERGRviIjH+HVq0SYWVsiJz0TAGBvX4nzxpBBmNAQEVGxiYuLQ5s2XhqXKbhzx/BlCqj8YkJDRETFxskpd5mC3yOfKZYocHW0hb19JSYzZBAmNEREVKxcXesgw9YZVjey4d6oKdyrmGbFaSpf2CmYiIiIRI8JDREREYkeExoiIiISPSY0REREJHpMaIiIiEj0mNAQERGR6DGhISIiItFjQkNERESix4SGiIiIRI8JDREREYkeExoiIiISPSY0REREJHpMaIiIiEj0mNAQERGR6DGhISIiItFjQkNERESix4SGiIiIRI8JDREREYkeExoiIiISPSY0REREJHpMaIiIiEj0mNAQERGR6DGhISIiItFjQkNERESix4SGiIiIRI8JDREREYkeExoiIiISPSY0REREJHpMaIiIiEj0mNAQERGR6DGhISIiItFjQkNERESix4SGiIiIRI8JDREREYmeeUlXgKg8iox8hFevEmFmbYmc9EwAgL19Jbi61inhmhERiRMTGqJiFhcXhzZtvJCTk6OyXSqV4s6dh3ByciqhmhERiRcTGqJi5uTkhJCQcPwe+QyLTkRgmZ8HXB1t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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "'''以hour为分类标准，绘制y的箱型图 '''\n",
    "df.boxplot(column='y', by='hour')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "f9dac3ce34086c9e",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:16.976414800Z",
     "start_time": "2024-04-15T12:48:16.871647200Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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V65UTEyMWrVqpdjYWKWkpDj2lQAAqpyioiJt2bJZH374obZs2ayioqLKbglOymIY9l13MTc3V926ddO9996rESNG6OLFixo3bpzc3Nw0b948xcbGavDgwRowYECpeZOSkvTEE09owYIFCgsL05IlSzRv3jx9+eWX8vLyKlfD6elc+toVWSySn18dtj/gQtasWaWJE1/SsWNHrdOaNr1ZEydO1l139avEzlCRSn7/X43de2hOnTql22+/XaNGjVK1atXk4+OjQYMGKTk5Wfn5+Tp48KBCQkLKnDchIUF9+vRRRESEPD099fDDD8vHx0dr1661/xUBAFzGmjWrNHToYLVoEaR16zYoOztb69ZtUIsWQRo6dLDWrFlV2S3Cydh9L6dbb71V77zzjs209evXKzg4WKmpqSosLNSMGTO0c+dO1alTR3FxcRo2bJjc3Nx0+PBhxcXF2czr7++v1NTUcjdssZR7FlQBJdud7Q9UfUVFRZo48SV1795T77//odzd3VS7dm21bRup99//UA899Be9+uoE9e7dR+7u7pXdLq4ze3/v/6GbUxqGobfeektffvmlFi9erPT0dEVGRmrw4MGaNm2aDhw4oFGjRsnNzU3Dhg3TxYsXSx1aqlGjhnJycsq9bnvuuImqi+0PVH1fffWVjh07qmXLlqp+/dravHmzfv75Z914443q1KmT4uNfVocOHXTgwG516dKlstuFkyh3oLlw4YJeeOEF7d+/X4sXL1ZgYKACAwMVHR1trQkLC9OQIUO0du1aDRs2TF5eXsrNzbVZTm5urnx8fMrdMLePd00lt49n+wNV38GD/5Uk7d69X4MG3VdqDM348ROsdSEhEZXSIypOye//qylXoDl27Jgee+wx3XTTTVq+fLl8fX0lSRs2bFB6erruu+8+a21+fr5q1KghSWrevLkOHTpks6zDhw+rc+fO5Vm9JG4f7+rY/kDVd8MNjSRJTzwxTD169NLbb7+rjh2j9O23SXrrrX9q5MjHrHX8PkAJuwcFZ2VlaciQIWrdurXeffdda5iRLh+CmjJlirZt2ybDMJSSkqL3339fgwYNkiQNHDhQq1evVmJiogoKCrRo0SJlZGQoJibG8a8IAGBqbdtGyd3dXQ0a3KD33luiNm0iVbt2bbVpE6n33luiBg1ukLu7h9q2jarsVuFE7N5Ds2LFCp06dUrr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HKjVq1crMTFRBQUFWrRokTIyMhQTE+OoFgAAgIty2B6amJgYvfDCC5o4caLS0tLk5+env/71r+rfv78kqX379oqPj7c+7+/vrwULFsjb29tRLQAAABd1TYHmhx9+sHl833332Rxy+q3+/ftbAw4AAICjMLoKAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACYHoEGAACY3h8ONJmZmYqJiVFSUpJ12p49e3TPPfcoPDxcXbt2VUJCgs08K1euVExMjFq1aqXY2FilpKT88c4BAAD+zx8KNDt37tSgQYN07Ngx67SsrCwNHz5cd999t5KTkzV58mRNmTJF3333nSQpKSlJkyZN0tSpU5WcnKx+/frpiSee0KVLlxzzSgAAgMsqd6BZuXKlxowZo2eeecZm+ueffy5vb2898MAD8vDwUPv27dW3b18tWbJEkpSQkKA+ffooIiJCnp6eevjhh+Xj46O1a9c65pUAAACX5VHeGTp27Ki+ffvKw8PDJtQcOnRIAQEBNrX+/v5avny5JOnw4cOKi4sr9Xxqamq51m+xlLdjVAmW/33nZwBwMXz+XZq927zcgaZBgwZlTr948aK8vLxsptWoUUM5OTl2PW+v+vXrlKseVYN3XvHl7/Vqyc+PnwHAlfD5hz3KHWh+j5eXl7Kzs22m5ebmqlatWtbnc3NzSz3v4+NTrvVkZGTLMK6tV5jPuayL1u/p1Tk5D3AlfP5dm8Vi384MhwWagIAAbdmyxWba4cOH1bx5c0lS8+bNdejQoVLPd+7cuVzrMQwRaFyR8b/vbH/AxfD5hx0cFnVjYmKUnp6uRYsWqaCgQImJiVq9erV13MzAgQO1evVqJSYmqqCgQIsWLVJGRoZiYmIc1QIAAHBRDttD4+Pjo4ULF2ry5MmaMWOGfH19NWHCBLVr106S1L59e8XHx2vixIlKS0uTv7+/FixYIG9vb0e1AAAAXNQ1BZoffvjB5nFoaKiWLl36u/X9+/dX//79r2WVAAAApTC6CgAAmB6BBgAAmB6BBgAAmB6BBgAAmB6BBgAAmB6BBgAAmB6BBgAAmB6BBgAAmB6BBgAAmB6BBgAAmB6BBgAAmB6BBgAAmB6BBgAAmB6BBgAAmB6BBgAAmB6BBgAAmB6BBgAAmB6BBgAAmJ5HZTeAqu3Y2UvKyS+85uUcycyRJP2UkSPDuObFqWY1DzX18br2BQEAnAKBBtfNsbOXFLcw2aHLfHntDw5b1kePtiXUAEAVQaDBdVOyZ+b/9Q7ULb41r2lZFotkqV5NRl7+Ne+h+SkzR6+s/cEhe44AAM6BQIPr7hbfmrq9YZ1rWobFIvn51VF6erZDDjkBAKoWBgUDAADTI9AAAADTI9AAAADTI9AAAADTI9AAAADTI9AAAADT47RtAMB1wZXCUZEINAAAh+NK4ahoBBoAgMNxpXBUNAINAOC64UrhqCgMCgYAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKbn0ECzdu1aBQUFKTw83Po1duxYSdKePXt0zz33KDw8XF27dlVCQoIjVw0AAFyYhyMXtnfvXvXv319TpkyxmZ6VlaXhw4dr9OjRGjRokJKTkzVq1CgFBgYqLCzMkS0AAAAX5NA9NHv37lVISEip6Z9//rm8vb31wAMPyMPDQ+3bt1ffvn21ZMkSR64eAAC4KIftoSkuLtb+/fvl5eWld955R0VFRbrjjjs0ZswYHTp0SAEBATb1/v7+Wr58ebnXY7E4qmNcbyXbymK59u3262VdK0f2BaBsfP7hKPZuJ4cFmszMTAUFBalHjx6aMWOGzp49q3Hjxmns2LFq0KCBvLy8bOpr1KihnJyccq+nfv06jmoZ15l3XvHl79615OfnmO3miO1/PfoCYIvPPyqawwKNn5+fzSEkLy8vjR07Vvfee69iY2OVm5trU5+bm6tatWqVez0ZGdkyjGtuFxXg3LmL1u/p1a/t6KbFcvmXmSO2vyP7AlA2Pv9wlJLtfzUOCzSpqalas2aNnnvuOVn+b/9Qfn6+3NzcFBYWpn/961829YcPH1bz5s3LvR7DEIHGJEq2kyO3mSOWdT36AmCLzz8qmsPiqbe3t5YsWaJ33nlHhYWFOnXqlF5//XUNGDBAPXr0UHp6uhYtWqSCggIlJiZq9erViouLc9TqAQCAC3NYoGnUqJHefvttbdy4UZGRkYqLi1NoaKheeeUV+fj4aOHChfrss88UFRWlCRMmaMKECWrXrp2jVg8AAFyYQ69DExkZqaVLl5b5XGho6O8+BwAAcC0YEQUAAEyPQAMAAEyPQAMAAEyPQAMAAEzPoYOCAQAoYfE4r2M5h+SWVf6LqNosxyKdsdTUuayca752zLGci7J4nL+2hcApEWgAANeFp3eSph7YWNltlOLpfaekOyq7DTgYgQYAcF0UnItSfOcBauZ77XtovL1r6ty5a99DcyTzoiYcOnVtC4FTItAAAK4Lo7CumtZsroB613YTSItF8qtfR+nGtd/LqTg3W0bhhWtbCJwSg4IBAIDpEWgAAIDpEWgAAIDpEWgAAIDpEWgAAIDpEWgAAIDpEWgAAIDpEWgAAIDpcWE9XFfcywUAUBEINLiuuJcLAKAiEGhwXXEvFwBARSDQ4LriXi4AgIrAoGAAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6HpXdAACg6kpNu3DNy7BYJMu5PBl5+TKMa1vWT5k519wPnBOBBtcdv9AA11NUfPmDOvmLQ5XcSdlqVuPPX1XDFsV1wy80wHUF31hXi+5vJXc3yzUv60hmjl5e+4Mm9Q5UM9+a17y8mtU81NTH65qXA+fCb3RcN/xCA1xb8I11HbIcy//9Crmlfk0F3lDHIctE1UOgwXXFLzQAQEXgLCcAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6BBoAAGB6FRpoMjIyNHLkSLVp00ZRUVGaPHmyCgsLK7IFAABQBVVooHn66adVs2ZNbd68WcuXL9e2bdu0aNGiimwBAABUQRV2peCjR49q+/bt+uabb+Tl5aUmTZpo5MiRev311zVs2DC7l2O59qvow8kcOfKTsrKyrlxzNkd5pw/rhwMeyjt95Vsf1KtXT82a3eLIFgFcJ3z+cTX2/t2vsEBz6NAheXt7q2HDhtZpt912m06dOqXz58+rbl37LpFfvz6Xva9K0tPTFRUVruLiYrvqh/3r6jXu7u46ffq0/Pz8rrE7ANcTn384UoUFmosXL8rLy/ZmgCWPc3Jy7A40GRnZMgyHt4dKU11JSSlX/R+axSJZqleTkZd/1e1fr149SdWVnp7tuDYBXAd8/nF1Fot9OzMqLNDUrFlTly5dsplW8rhWrVp2L8cwRKCpYm6++eq7hy0Wyc+vjtLT7Qu0/IwA5sDnH45SYYOCmzdvrnPnzik9Pd067ccff1SjRo1Upw6HkQAAwB9XYYGmWbNmioiI0N/+9jdduHBBx48f15w5czRw4MCKagEAAFRRFXra9owZM1RYWKg777xT9957rzp16qSRI0dWZAsAAKAKshiGuY422nsMFVVLeY+hA6g6+Py7tpLtfzXc+gAAAJgegQYAAJgegQYAAJgegQYAAJgegQYAAJgegQYAAJgegQYAAJgegQYAAJgegQYAAJhehd1t21EslsruAJWhZLuz/QHXw+fftdm73U136wMAAIDf4pATAAAwPQINAAAwPQINAAAwPQINAAAwPQINAAAwPQINAAAwPQINAAAwPQINAAAwPQINAAAwPQINnF5GRoZGjhypNm3aKCoqSpMnT1ZhYWFltwWgAmVmZiomJkZJSUmV3QqcFIEGTu/pp59WzZo1tXnzZi1fvlzbtm3TokWLKrstABVk586dGjRokI4dO1bZrcCJEWjg1I4ePart27dr7Nix8vLyUpMmTTRy5EgtWbKkslsDUAFWrlypMWPG6JlnnqnsVuDkCDRwaocOHZK3t7caNmxonXbbbbfp1KlTOn/+fCV2BqAidOzYUV988YV69+5d2a3AyRFo4NQuXrwoLy8vm2klj3NyciqjJQAVqEGDBvLw8KjsNmACBBo4tZo1a+rSpUs200oe16pVqzJaAgA4IQINnFrz5s117tw5paenW6f9+OOPatSokerUqVOJnQEAnAmBBk6tWbNmioiI0N/+9jdduHBBx48f15w5czRw4MDKbg0A4EQINHB6M2bMUGFhoe68807de++96tSpk0aOHFnZbQEAnIjFMAyjspsAAAC4FuyhAQAApkegAQAApkegAQAApkegAQAApkegAQAApkegAQAApkegAQAApkegAQAApkegAXBFp06dUnh4uE6dOlXZrZQpMDBQSUlJdtXOnDlTgwcPvs4dAagM3JMdwBXddNNNSklJqew2AOCK2EMD4IpOnDihwMBAnThxQh988IG6deumNm3aqG/fvkpISLjq/FlZWQoODtaBAwckSXl5eQoLC9Prr79urRk9erSmT58uSdqwYYNiY2PVunVr9ejRQ4sWLVJxcbEkafz48Ro9erR69eqldu3a6dixYzbrWrFihdq2bavk5GRJ0q5duxQXF6dWrVrpvvvu04kTJ6y1hmFo/vz56tu3r9q0aaO2bdvqueeeU25urtLS0hQUFKRdu3ZZ69PT0xUcHFxqnQCcA4EGgF0Mw9CUKVM0f/587dixQ88//7wmTZqkM2fOXHG+evXqKTIyUt98840kafv27bJYLNq6daskKT8/X99++626d++uxMREPf300xo2bJi2b9+uadOm6b333tP7779vXd7mzZs1ffp0ff7552ratKl1ekJCgl5//XUtXLhQbdu21dmzZ/X444+rR48eSk5O1tixY7VhwwZr/bp16/T+++9r5syZ2rFjh5YuXapvv/1Wq1evVsOGDRUdHa1PPvnEWr9q1SqFh4fbrBOA8yDQALDL6dOnZRiGli5dqp07d6p9+/bavXu3brjhhqvO261bN2ug+fbbbzVo0CD98MMPyszMVGJionx8fNSiRQutWLFCd955p3r37i0PDw8FBwdr+PDhWrp0qXVZrVq1UkBAgOrWrWudlpCQoJdffllvv/22QkNDJUlfffWVvLy89Nhjj8nT01MRERGKi4uzztO5c2ctX75czZo1U2Zmps6ePStvb2+lpaVJkuLi4vTZZ58pPz9fkrRy5Uqb+QE4FwINALvceOON+ve//62TJ09qxIgRioyM1N/+9jfl5eVddd5u3bppz549ys7O1ubNm9W7d28FBAQoMTFRGzduVPfu3SVJGRkZatKkic28f/rTn3Ty5Enr47IC1K5du+Tv76+PPvrIOi0tLU033nijLBaLddqv964YhqE333xTkZGRuv/++7VkyRIVFBTIMAxJUteuXSVJX3/9tfbv36+TJ0+qR48e9rxVACoBg4IB2CUzM1NFRUWaPXu2iouLtWvXLo0ePVq33HKLHnjggSvO27BhQ91+++1asWKF0tPTFRoaqo4dO2rr1q3avHmz3nrrLUlS48aNS41ROX78uBo0aGB9/OuAUuL//b//J19fX917772688471blzZzVq1EgnT55UcXGx3Nwu/9/t9OnT1nneeOMNnTp1Sps2bVLt2rUlSX379rU+X61aNfXt21effvqpbrrpJvXq1Us1a9Ys35sGoMKwhwaAXSwWix599FFt27ZNbm5uatiwoSTJx8fHrvljYmI0d+5ctWvXTu7u7oqOjtaaNWtUXFysVq1aSbp8mGfTpk1at26dioqK9P3332vBggVXPdTj6empoKAgDR8+XC+99JKysrLUtWtXGYahmTNnKj8/X/v27bMZxHzhwgVVr15d7u7uysvL08KFC3Xw4EEVFBRYawYOHKjNmzfriy++UGxsbDnfMQAViUADwC4+Pj565ZVXNHHiRIWHh+uBBx7Q/fffr169etk1f7du3XT27FlFR0dLkiIiImSxWNStWzfrXpeWLVtq+vTpWrBggdq0aaMnn3xSf/nLXzRixAi71vHEE0/I19dXr776qurWrat3331X27ZtU2RkpF566SWbQ0ZPP/20cnNz1aFDB3Xt2lW7d+9W//79dfDgQWvN7bffrqZNm8rNzU0RERH2vlUAKoHFKDlgDAAo5cknn1RYWJiGDx9e2a0AuAL20ABAGY4fP64vvvhCW7du5XATYAIMCgZwTb777jsNGTLkd5+/6aab9Omnn1ZgR44xa9Ysbdy4US+++KL8/Pwqux0AV8EhJwAAYHoccgIAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKb3/wHDm0nEf9waowAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "'''以is_workday为分类标准，绘制y的箱型图 '''\n",
    "df.boxplot(column='y', by='is_workday')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "ac80c8948fbcf3a0",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:16.988850900Z",
     "start_time": "2024-04-15T12:48:16.978415300Z"
    }
   },
   "outputs": [],
   "source": [
    "'''剔除离群点,经验:差值大于3倍标准差的数据的出现概率很小，因此按照经验规则删除离群点（噪点）'''\n",
    "df = df[np.abs(df.y-df.y.mean())<=(3*df.y.std())]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "6ec9bbc6d352915c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:17.000613900Z",
     "start_time": "2024-04-15T12:48:16.984339900Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Index: 7901 entries, 0 to 7989\n",
      "Data columns (total 8 columns):\n",
      " #   Column      Non-Null Count  Dtype  \n",
      "---  ------      --------------  -----  \n",
      " 0   city        7901 non-null   int64  \n",
      " 1   hour        7901 non-null   int64  \n",
      " 2   is_workday  7901 non-null   int64  \n",
      " 3   weather     7901 non-null   int64  \n",
      " 4   temp_1      7901 non-null   float64\n",
      " 5   temp_2      7901 non-null   float64\n",
      " 6   wind        7901 non-null   int64  \n",
      " 7   y           7901 non-null   int64  \n",
      "dtypes: float64(2), int64(6)\n",
      "memory usage: 555.5 KB\n"
     ]
    }
   ],
   "source": [
    "'''查看删除离群点后共有多少条数据'''\n",
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "c427259b93aa9fd4",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:17.247076900Z",
     "start_time": "2024-04-15T12:48:16.994100800Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda\\Lib\\site-packages\\seaborn\\matrix.py:260: FutureWarning: Format strings passed to MaskedConstant are ignored, but in future may error or produce different behavior\n",
      "  annotation = (\"{:\" + self.fmt + \"}\").format(val)\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 2000x1600 with 2 Axes>",
      "image/png": "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KXbs2PFXv+b555+PI488Mp544olcP0sRDQAAAADQCk2YMCE6duwYS5cujfnz58djjz0Ws2fPfs/Xv/XWW3HllVfG22+/nftnKaIBAAAAAFqZl156KZYtWxZf/OIXo0OHDtGnT58YN25czJs37z2/5oYbbogRI0bs1c9TRAMAAAAAhVOKrNV9bNu2LTZv3tzoY9u2be/6+1m1alV069Ytevbsufuxfv36xZo1a+LNN9/c4/U//vGP46WXXorx48fv1fuhiAYAAAAAKIAZM2bEwIEDG33MmDHjXV+7ZcuW6NChQ6PHdn2+devWRo+/8MIL8a1vfStuvPHGaNOmzV5la7tXXwUAAAAAQEUZO3ZsjB49utFjtbW17/rajh07xltvvdXosV2f77fffrsfe+edd+KKK66Iq6++Og488MC9zmYiGgAAAACgAGpra6NTp06NPt6riD7ssMPi9ddfj/Xr1+9+7IUXXohevXpF586ddz/2q1/9Kl588cW45pprYtCgQTFo0KCIiPjc5z4X119/fZOzmYgGAAAAAGhlDjnkkBg4cGB89atfja985Svx2muvxbRp0+Lss89u9LpBgwbFihUrGj32gQ98IG699dYYMmRIk3+eiWgAAAAAoHDKvTiwHB95TZ06NXbs2BHDhw+PkSNHxoknnhjjxo2LiIijjz46Fi5c2Gzvh4loAAAAAIBWqK6uLqZOnfquzz399NPv+XXPPfdc7p9lIhoAAAAAgKQU0QAAAAAAJKWIBgAAAAAgKXdEAwAAAACFUyrlX95HOiaiAQAAAABIShENAAAAAEBSimgAAAAAAJJyRzQAAAAAUDilcEd0JTERDQAAAABAUopoAAAAAACSUkQDAAAAAJCUIhoAAAAAgKQsKwQAAAAACseywspiIhoAAAAAgKQU0QAAAAAAJKWIBgAAAAAgKUU0AAAAAABJWVYIAAAAABSOZYWVxUQ0AAAAAABJKaIBAAAAAEhKEQ0AAAAAQFKKaAAAAAAAkrKsEAAAAAAonFLJssJKYiIaAAAAAICkFNEAAAAAACSliAYAAAAAIClFNAAAAAAASTV5WeGoUaMiy/76Bd9z587d50AAAAAAAPuqPiwrrCRNLqKHDRsWX//61+O8886L7t27p8wEAAAAAECBNLmIHj16dKxduzbWr18f1113XcpMAAAAAAAUSK47oi+//PJY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LHQpFIlVq1ZFZWVlrFq1qtClfKyOHTvGkiVL9mnbadOmxahRozKuiEPZggULYsyYMfnLo0aNimnTphWwIgqp2M+jZs+e7ZhWAopxnKWUYvr06dG3b984++yzY/DgwfGb3/ym0GVRYJ/3nPD666+P66+//gBXBUCpalToAti7qqqqePnll/OXN27cWMBqgFLQpk2bescVKGXvvfdepJQKXQZFoljPoz788MOYOnVqzJ49O7p161bocvicinGc/dd//VfMnTs37r777mjXrl08/fTTcc0110SbNm2ic+fOhS6PAnFOCMDBZEZ0kXn11Vdj1KhRUVlZGT179ozbb789Fi9eHB07doyIiNGjR8eqVavixhtvjMmTJ8eYMWPihhtuqHcfY8eOjdtvv70Q5VPk/ud//icGDhwYFRUVcdlll8WaNWsiIuLJJ5+MmpqaOPvss+OCCy6IOXPmRC6Xi4iPn+Ww+2zVvn37xqRJk6JHjx5x4YUX5vejuO0+S/4Xv/hFVFdXR1VVVQwePDh+/etf73X/999/P8rLy+OPf/xjROz8CXLnzp3jRz/6UX6bq666Kn8s2tsYu+qqq2LgwIFx7rnnxvLly+s91ty5c6Nr167xu9/9LiIiXnrppRg2bFhUVFTExRdfXG+mf0opfvKTn8TgwYOjqqoqunbtGt/5zndi69atsWbNmjjjjDPipZdeym+/bt26KC8v3+MxOXhqampizpw5+cujRo2Kr33ta/nL9957b4wcOTKWL18e48aNi3POOSf69OkTt956a9TW1kbEp7/vS5YsiRtvvDE/42vXce+dd96J0aNHR9euXaNfv371ZgWuW7cuvvvd70aPHj2iZ8+eMWnSpNiyZUtERCxZsiTOO++8+M53vhNVVVXxk5/85CC8Shwof38eteu8q2vXrjFgwICYM2dO/kuLadOmxdVXXx0TJ06Ms88+O3r37h2PP/54TJ8+Pbp37x7dunWLGTNm5O+7Y8eOMWvWrDj//POjsrIyxo4dmx9v+2Lo0KGxdu3auOSSSw748+bgKtZxtmnTprjiiiuiffv20aBBg+jbt2+0b9++3ucipWVfPmPPP//8er+c7NixY/z85z+PCy64ICorK+Piiy+ON954I7/PU089FV/96lejoqIixo4dW5RfulC8Jk2aFKNHj6533eTJk+N73/tegSoCDrpE0di4cWPq1q1bmjZtWtq2bVt65513Uu/evdP999+fysrK8tv16dMnPfTQQymllObNm5eqqqrStm3bUkoprV27NpWXl6fly5cX5DlQnFasWJHKysrSFVdckTZt2pTee++9dOGFF6YbbrghLVq0KJWXl6d58+al7du3p2XLlqXevXun2bNnp5RSmjhxYpo4cWK9+ysrK0uLFy9OKe0cj0OHDk3vv/9+ev/99w/2U+Mz2jUmli9fns4888z09ttvp5RSevbZZ9NZZ52V1qxZs9f7uOyyy9Jdd92V369z587pwgsvTCmltG3btlRZWZlee+21fRpjFRUV6Y033siPoV1j7IEHHkjnnntu+sMf/pBSSmnDhg2pqqoqzZw5M9XW1qYXXnghnX322enrX/96SmnnMbFHjx7pz3/+c0oppbfeeit169YtPfDAAymllP7t3/4tTZo0Kf8c7rnnnjRy5MjP+WryecyYMSONHj06pZTSli1bUkVFRSovL8+PhW984xtpxowZqU+fPmnKlClp69atadWqVWn48OFpypQpKaW9v+8PPfRQ6tOnT/4xv/71r6dzzz03LVu2LO3YsSPdcccdqaKiItXW1qYdO3akr33ta+m6665LmzdvThs2bEhjx45N3/72t1NKKS1evDiVlZWlO+64I9XW1qbNmzcfrJeKA2TXedTq1atTly5d0r333ptqa2vTn/70p9S/f/90//33p5RSmjp1aurYsWN6/PHHUy6XSz/60Y9Sp06d0i233JJqa2vTE088kcrKytLKlStTSjuPW1/96lfT8uXL06ZNm9K4cePSJZdcss91/fWvf80/7q5jGoeuYh1nu3vrrbdSeXl5Wrp06QF73hSXffmMnT17diorK0srVqxIKe0cYyNGjEh/+9vf0qZNm9Jll12Wv4+33347lZeXp0ceeSRt3749PfHEE6lTp057/K0An+T3v/99Ov3009Pq1atTSjv/ZujWrVtatGhRgSsDDhYzoovI008/HU2bNo0rrrgimjRpEm3bto3Zs2dHs2bNPnGf6urqaNiwYSxYsCAids54raysjFNOOeVglc0hZNy4cdG8efM45phjolevXrF8+fKYO3du9OvXLwYNGhSNGjWK8vLyuPzyy+OXv/zlPt/vBRdcEC1atIgWLVpkWD1ZWL16daSU4pe//GW8+OKL8U//9E/xyiuvxD/8wz/sdd/q6up49tlnIyLiueeeixEjRsQbb7wRGzZsiMWLF8dxxx0XnTp12qcxVlFREWVlZfXG0K9//eu44YYbYubMmXHWWWdFRMRvf/vbaNasWXzzm9+Mxo0bR5cuXWLYsGH5fXr37h0PPvhgnHbaabFhw4bYuHFjHHvssfnZYsOGDYvf/OY3+Zm0Dz/8cL39Ofiqq6tj6dKl8dFHH8XixYujc+fO0b59+1i8eHFs2bIlli5dGq1bt47a2tq49tpro2nTptG6deu4+uqr47777ouIvb/vH2fQoEFRXl4eDRs2jEGDBsWHH34Y69evj2XLlsWrr74aN954Yxx99NFx3HHHxcSJE2PevHn1Zn0NHz48GjduHEcffXTmrxHZePTRR6N9+/YxcuTIaNy4cXTo0CHGjBmTH1cRER06dIivfOUr0aBBg+jRo0fs2LEjxo0bF40bN46+fftGRNRbV/Xqq6+OU045JZo3bx7f+9734sUXX9zn/gytWrU6sE+QolBs42yXP//5z/HNb34zhgwZEl27dj0wT5aisy+fseXl5XvsN2rUqPjiF78YzZs3j4EDB+Yb/s6fPz/OPPPMGDJkSDRq1Ciqq6ujT58+B/lZcSjbNQYfe+yxiNh5bn/00UfHOeecU+DKgIPFGtFFZO3atdG6deto0KBB/rp27drF2rVrP3GfJk2axD//8z/HI488El/5ylfi4Ycf3uOnLrDLsccem/9/48aNY8eOHbF+/fro1KlTve1OPvnkePfdd/f5fvcltKQ4tW7dOn7+85/HrFmzYty4cbFjx46oqamJ6667Lpo2bfqp+1ZXV8d//Md/xObNm2PhwoVx8803x9KlS2Px4sWxZMmSGDBgQETEPo2xjxtDL730UnTo0CEeeuih/NqVa9as2eM42bZt2/wSISmluPXWW+Ppp5+Oli1bRqdOnWL79u35n0D37ds3brzxxnjmmWeiTZs28e6778YFF1zwGV45DpQvf/nL0aZNm1iyZEksXLgwevToEevWrYvnn38+6urqomPHjrF27drYsGFDvbAkpRTbt2+P9evXR5MmTT71ff84f388jIioq6uLlStXxo4dO+K8886rt32TJk1ixYoV+cuOe4e+d999N1599dWoqqrKX5fL5eKII47IX959nDRsuHP+xjHHHFPv8u5LUp166qn5/7dp0yYidp7fnXzyyQf+CXBIKMZxtmDBgrj++uujpqYmJk6cuJ/PiEPJvnzGtm7deo/9TjjhhPz/GzVqlP88XbNmTX7M7dK2bVvLc7Bfampq4r//+79jzJgxMXfu3PiXf/mXeuf2QGkTRBeRVq1axV//+tdIKeUPxE8++WR+XcpPMmzYsLjooovi5ZdfjpUrVwpV2C8nnXTSHuvjrlixIr74xS9GxM4/gLZt25a/bcOGDXvchxOHQ9eGDRtix44dMX369MjlcvHSSy/FVVddFV/60pdi5MiRn7rviSeeGKeffnrMnTs31q1bF2eddVb07Nkznn/++Vi4cGHcdtttEbH3MRbx8WNo8uTJ0bJly7jooouiX79+0bt372jVqlW8++67kcvl8n+cr169Or/PlClTYtWqVbFgwYL8TNXBgwfnb2/SpEkMHjw45s2bF23atImBAwfGUUcdtX8vGgdcv3794tlnn41FixbFj3/841i/fn388Ic/jC1btsSAAQOiVatW0bZt23rrOG/ZsiXWr18fLVu2jJtuuulT3/f90apVqzjyyCNjyZIl+aCotrY2VqxYEaeeemq8+OKLEeG4VwpatWoV55xzTtxzzz356zZu3BgffPBB/vL+vs9r1qyJsrKyiIj8DNW/D204vBTbOJs+fXrMmjUrJk+e/JmPkxxa9vYZuz9atWoVv/3tb+tdt3r16r1OXoDdDR06NH784x/Hyy+/HP/7v/8bkyZNKnRJwEFkaY4icv7550ddXV3cddddUVtbG8uXL4+bb765XggYsTNI2bx5c/7yGWecER06dIjJkyfHoEGDPnUpD/h7w4YNiwULFsTjjz8eO3bsiNdeey3uvvvu/HIF7du3jxdeeCHWrFkTW7dujenTpwtgSkiDBg1i9OjRsWjRomjYsGGceOKJERFx3HHH7dP+/fv3jzvvvDPOPffcOOKII6JHjx7x2GOPRS6Xi4qKiojY+xj7JI0bN44zzjgjLr/88vj+978f77//fvTt2zdSSjFt2rSora2NZcuW1WuuuGXLlmjatGkcccQRsW3btvjpT38ab775Zmzfvj2/zfDhw2PhwoXxxBNPRE1NzX6+YmShf//+MX/+/Ni0aVOcccYZ0a1bt1i1alU8+eST0b9//+jTp0988MEHMWvWrKitrY1NmzbFxIkT49vf/nY0aNBgr+9706ZN46OPPoq6urq91tK5c+c49dRT45ZbbokPPvggtm7dGjfffHNcdtllsWPHjqxfCg6CXedRgwcPjldeeSUeffTRqKuri7/97W8xbty4uOWWWz7zfU+fPj3Wrl0bmzZtiv/8z/+MXr165Y+rHF6KcZzNnj07Zs+eHffdd58Q+jCyt8/Y/TFkyJB4880344EHHoi6urp47rnn4oknnsiockrV8ccfH+edd15Mnjw5qqqqfGELhxlBdBFp0aJF3HPPPbFo0aLo2bNnjBo1Ki6++OI47bTT6m03fPjwuPXWW+O73/1u/rqampp47bXXrHXKfvvHf/zHuP322+Puu++OqqqqmDBhQlxyySUxbty4iIgYMWJEVFZWxpAhQ6J///7RunVrJwsl5LjjjotJkybFTTfdFJWVlTFy5Mi49NJLY+DAgfu0f3V1dWzcuDF69OgRERFdunSJBg0aRHV1df4Li72Nsb351re+FS1btowf/OAH9Y6T3bp1i+9///v1fgVyzTXXxNatW6N79+7Rt2/feOWVV2Lo0KHx5ptv5rc5/fTTo23bttGwYcPo0qXLvr5UZKiioiIaNWoU3bt3jwYNGsSRRx4ZVVVVcdJJJ0W7du3i6KOPjjlz5sSSJUuid+/e+f4Id955Z0Ts/X3v2rVrHH/88dG1a9d44403PrWWRo0axcyZM2PdunUxYMCA6NmzZyxfvjxmz55txleJ2HUedeutt8asWbPiV7/6VXTv3j2GDh0a7dq1+1wBYXl5eVx66aXRt2/faNGiRUyZMuUAVs6hpNjGWUoppk+fHh999FGMHDkyKisr8//uuuuuz1wLxW9vn7H745RTTom77ror7rvvvujSpUvMmDFjv8NsiJBfwOGsQfq0BRQ5ZDz11FMxZcqUePzxxwtdCkDRmzBhQnTu3Dkuv/zyQpcClIiOHTvGz372Mw2XyJRxBpSC119/PUaNGhXPPfecL/rhMGON6EPcxo0bY/Xq1XHnnXfGJZdcUuhyAIraihUr4vXXX4/nn38+brrppkKXAwAAh40tW7bEqlWr4rbbbouamhohNByGBNGHuGXLlsWECROie/fucfHFFxe6HKBE/OEPf4h//dd//cTb27RpE/PmzTuIFR0Yd9xxRzz11FPx7//+7/U6wgNkZfbs2TF16tRPvH3w4MExefLkg1gRpcg4Aw4Fq1evjhEjRsTpp58e48ePL3Q5QAFYmgMAAAAAgExpVggAAAAAQKYE0QAAAAAAZEoQDQAAAABApgTRAAAAAABkShANAAAAAECmBNEAAAAAAGRKEA0AAAAAQKYE0QAAAAAAZEoQDQAAAABApv4/XvDzrLssMV4AAAAASUVORK5CYII="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "'''绘制热力图，只显示下三角'''\n",
    "plt.figure(figsize=(20, 16))\n",
    "sns.heatmap(df.corr(), annot=True, fmt='.2f', cmap='coolwarm', square=True, mask=np.triu(df.corr(), k=0))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "924742156bdc4ac0",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:17.259098400Z",
     "start_time": "2024-04-15T12:48:17.247076900Z"
    }
   },
   "outputs": [],
   "source": [
    "'''删掉训练集和测试集中一些强共线性的和相关性比较弱的特征，temp_2和is_wokday'''\n",
    "df = df.drop(['temp_2', 'is_workday'], axis=1)\n",
    "df_test = df_test.drop(['temp_2', 'is_workday'], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "10524b174b757c67",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:17.581511400Z",
     "start_time": "2024-04-15T12:48:17.252681500Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "   city  hour  weather  temp_1  wind   y\n0     0    22        2     3.0     0  15\n1     0    10        1    21.0     3  48\n2     0     0        1    25.3     0  21\n3     0     7        1    15.7     0  11\n4     1    10        1    21.1     2  39",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>city</th>\n      <th>hour</th>\n      <th>weather</th>\n      <th>temp_1</th>\n      <th>wind</th>\n      <th>y</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0</td>\n      <td>22</td>\n      <td>2</td>\n      <td>3.0</td>\n      <td>0</td>\n      <td>15</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>0</td>\n      <td>10</td>\n      <td>1</td>\n      <td>21.0</td>\n      <td>3</td>\n      <td>48</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>25.3</td>\n      <td>0</td>\n      <td>21</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>0</td>\n      <td>7</td>\n      <td>1</td>\n      <td>15.7</td>\n      <td>0</td>\n      <td>11</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>1</td>\n      <td>10</td>\n      <td>1</td>\n      <td>21.1</td>\n      <td>2</td>\n      <td>39</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''查看数据'''\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "24b3e61e",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "5d47b5f827ad886e",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:17.583516700Z",
     "start_time": "2024-04-15T12:48:17.266996900Z"
    }
   },
   "outputs": [],
   "source": [
    "'''从训练集中提取 'y' 列'''\n",
    "y = df['y']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "outputs": [],
   "source": [
    "'''删除 'y' 列，保留其他列作为特征'''\n",
    "X = df.drop('y', axis=1)"
   ],
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:17.586038100Z",
     "start_time": "2024-04-15T12:48:17.273130800Z"
    }
   },
   "id": "77660ae324725e76"
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 使用随机搜索调整超参数"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "4328582a1a44db73"
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "调参用时： 5.7035393714904785 秒\n"
     ]
    },
    {
     "data": {
      "text/plain": "({'n_estimators': 200}, -568.7536112809872)"
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import RandomizedSearchCV\n",
    "\n",
    "# 定义一个字典 'param_test'，指定 'n_estimators' 参数的取值范围。\n",
    "param_test = {\n",
    "    'n_estimators': range(100, 1000, 100)\n",
    "}\n",
    "# 创建一个RandomizedSearchCV对象 'rsearch'，用于进行随机参数搜索。\n",
    "rsearch = RandomizedSearchCV(\n",
    "    estimator=xgb.XGBRegressor(\n",
    "        learning_rate=0.1,         # 学习速率\n",
    "        max_depth=5,               # 树的最大深度\n",
    "        min_child_weight=1,        # 子节点所需的最小权重\n",
    "        gamma=0,                   # 损失降低所需的最小分裂增益\n",
    "        subsample=0.8,             # 训练实例的子样本比例\n",
    "        colsample_bytree=0.8,      # 构建树时列的子样本比例\n",
    "        objective='reg:squarederror',  # 指定学习任务和相应的学习目标\n",
    "        nthread=4,                 # 运行XGBoost的线程数\n",
    "        scale_pos_weight=1,        # 正样本的权重\n",
    "        seed=27                    # 随机种子，用于可复现的结果\n",
    "    ),\n",
    "    param_distributions=param_test,  # 使用随机搜索的参数分布\n",
    "    scoring='neg_mean_squared_error',  # 使用负均方误差作为评分标准\n",
    "    n_jobs=4,                   # 并行运行的作业数量\n",
    "    cv=5,                       # 交叉验证的折数\n",
    "    random_state=27,            # 随机状态，确保结果可复现\n",
    "    n_iter=5                   # 随机搜索的迭代次数\n",
    ")\n",
    "star = time.time()\n",
    "rsearch.fit(X, y)  # 使用输入特征X和目标变量y来训练模型。\n",
    "end = time.time()\n",
    "print(\"调参用时：\", end - star, \"秒\")\n",
    "rsearch.best_params_, rsearch.best_score_  # 输出最佳参数和最佳得分"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-15T13:15:45.222557600Z",
     "start_time": "2024-04-15T13:15:39.512022200Z"
    }
   },
   "id": "f89a53df43152640"
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "outputs": [
    {
     "data": {
      "text/plain": "({'max_depth': 4}, -556.0426841324814)"
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''n_estimators的最优参数为200，调整 max_depth 的参数网格'''\n",
    "# 定义一个字典 'param_test' 来指定需要尝试的 'max_depth' 参数的范围。\n",
    "param_test = {'max_depth': range(3, 10)}\n",
    "rsearch = RandomizedSearchCV(\n",
    "    estimator=xgb.XGBRegressor(learning_rate=0.1, n_estimators=200, min_child_weight=1, gamma=0,\n",
    "                               subsample=0.8, colsample_bytree=0.8, objective='reg:squarederror',\n",
    "                               nthread=4, scale_pos_weight=1, seed=27),\n",
    "    param_distributions=param_test,\n",
    "    scoring='neg_mean_squared_error',\n",
    "    n_jobs=4, cv=5, random_state=27, n_iter=5\n",
    ")\n",
    "rsearch.fit(X, y)  # 使用输入特征X和目标变量y来训练模型。\n",
    "rsearch.best_params_, rsearch.best_score_  # 输出最佳参数和最佳得分。\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:25.145867600Z",
     "start_time": "2024-04-15T12:48:22.304342700Z"
    }
   },
   "id": "585c319f9dc02183"
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "调参用时： 6.619394063949585 秒\n"
     ]
    },
    {
     "data": {
      "text/plain": "({'min_child_weight': 1}, -556.0426841324814)"
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''n_estimators的最优参数为200，max_depth的最优参数为4，调整 min_child_weight 的参数网格'''\n",
    "# 定义一个字典 'param_test' 来指定需要尝试的 'min_child_weight' 参数的范围。\n",
    "param_test = {'min_child_weight': range(1, 6, 1)}\n",
    "# 创建并配置RandomizedSearchCV对象\n",
    "rsearch = RandomizedSearchCV(\n",
    "    estimator=xgb.XGBRegressor(learning_rate=0.1, n_estimators=200, max_depth=4, gamma=0,\n",
    "                               subsample=0.8, colsample_bytree=0.8, objective='reg:squarederror',\n",
    "                               nthread=4, scale_pos_weight=1, seed=27),\n",
    "    param_distributions=param_test, scoring='neg_mean_squared_error', n_jobs=4, cv=5, random_state=27, n_iter=5\n",
    ")\n",
    "star = time.time()\n",
    "rsearch.fit(X, y)  # 使用输入特征X和目标变量y来训练模型。\n",
    "end = time.time()\n",
    "print(\"调参用时：\", end - star, \"秒\")\n",
    "rsearch.best_params_, rsearch.best_score_  # 输出最佳参数和最佳得分。\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-15T13:09:21.258718900Z",
     "start_time": "2024-04-15T13:09:14.633455200Z"
    }
   },
   "id": "f33b843f5e7607f0"
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "outputs": [
    {
     "data": {
      "text/plain": "({'gamma': 0.0}, -556.0426841324814)"
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''n_estimators的最优参数为200，max_depth的最优参数为4，min_child_weight的最优参数为1，调整 gamma 的参数网格'''\n",
    "# 创建一个RandomizedSearchCV对象 'rsearch'。\n",
    "param_test = {'gamma': [i / 10.0 for i in range(5)]}\n",
    "# 创建并配置 RandomizedSearchCV 对象\n",
    "rsearch = RandomizedSearchCV(\n",
    "    estimator=xgb.XGBRegressor(learning_rate=0.1, n_estimators=200, max_depth=4, min_child_weight=1,\n",
    "                               subsample=0.8, colsample_bytree=0.8, objective='reg:squarederror',\n",
    "                               nthread=4, scale_pos_weight=1, seed=27),\n",
    "    param_distributions=param_test, scoring='neg_mean_squared_error', n_jobs=4, cv=5,\n",
    "    random_state=27, n_iter=5\n",
    ")\n",
    "rsearch.fit(X, y)  # 使用输入特征X和目标变量y来训练模型。\n",
    "rsearch.best_params_, rsearch.best_score_  # 输出最佳参数和最佳得分。\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:28.813997500Z",
     "start_time": "2024-04-15T12:48:26.988949300Z"
    }
   },
   "id": "8ecaf638d4ac0846"
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "outputs": [
    {
     "data": {
      "text/plain": "({'subsample': 0.8, 'colsample_bytree': 0.8}, -556.0426841324814)"
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''n_estimators的最优参数为200，max_depth的最优参数为4，min_child_weight的最优参数为1，gamma的最优参数为0.0，调整 subsample 和 colsample_bytree 的参数网格'''\n",
    "# 定义一个字典 'param_test' 来指定需要尝试的 'subsample' 和 'colsample_bytree' 参数的范围。\n",
    "param_test = {\n",
    "    'subsample': [i/10.0 for i in range(6, 10)],\n",
    "    'colsample_bytree': [i/10.0 for i in range(6, 10)]\n",
    "}\n",
    "# 创建 RandomizedSearchCV 对象并配置\n",
    "rsearch = RandomizedSearchCV(\n",
    "    estimator=xgb.XGBRegressor(learning_rate=0.1, n_estimators=200, max_depth=4, min_child_weight=1,\n",
    "                               gamma=0.0, objective='reg:squarederror', nthread=4, scale_pos_weight=1, seed=27),\n",
    "    param_distributions=param_test, scoring='neg_mean_squared_error', n_jobs=4, cv=5,\n",
    "    random_state=27, n_iter=10\n",
    ")\n",
    "rsearch.fit(X, y)  # 使用输入特征X和目标变量y来训练模型。\n",
    "rsearch.best_params_, rsearch.best_score_  # 输出最佳参数和最佳得分。"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:32.123312300Z",
     "start_time": "2024-04-15T12:48:28.809673600Z"
    }
   },
   "id": "eba7f1026db77c0b"
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "outputs": [
    {
     "data": {
      "text/plain": "({'learning_rate': 0.05}, -552.5609246681727)"
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''n_estimators的最优参数为200，max_depth的最优参数为4，min_child_weight的最优参数为1，gamma的最优参数为0.0,subsample的最优参数为0.8，colsample_bytree的最优参数为0.8,，调整学习率参数'''\n",
    "# 定义学习速率参数范围\n",
    "param_test = {'learning_rate': [0.01, 0.05, 0.1, 0.2]}\n",
    "# 创建 RandomizedSearchCV 对象并配置\n",
    "rsearch = RandomizedSearchCV(\n",
    "    estimator=xgb.XGBRegressor(n_estimators=200, max_depth=4, min_child_weight=1, gamma=0.0,\n",
    "                               subsample=0.8, colsample_bytree=0.8, objective='reg:squarederror',\n",
    "                               nthread=4, scale_pos_weight=1, seed=27),\n",
    "    param_distributions=param_test, scoring='neg_mean_squared_error', n_jobs=4, cv=5,\n",
    "    random_state=27, n_iter=4\n",
    ")\n",
    "rsearch.fit(X, y)\n",
    "rsearch.best_params_, rsearch.best_score_"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:33.601817700Z",
     "start_time": "2024-04-15T12:48:32.123312300Z"
    }
   },
   "id": "cf0aacf283770de8"
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "outputs": [
    {
     "data": {
      "text/plain": "({'reg_alpha': 0.05}, -552.2896744296481)"
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''n_estimators的最优参数为200，max_depth的最优参数为4，min_child_weight的最优参数为1，gamma的最优参数为0.0,subsample的最优参数为0.8，colsample_bytree的最优参数为0.8,，学习率最优参数为0.05，调整L1正则化参数'''\n",
    "# 定义正则化参数alpha的范围\n",
    "param_test = {'reg_alpha': [0, 0.001, 0.005, 0.01, 0.05]}\n",
    "# 创建并配置 RandomizedSearchCV 对象\n",
    "rsearch = RandomizedSearchCV(\n",
    "    estimator=xgb.XGBRegressor(learning_rate=0.05, n_estimators=200, max_depth=4, min_child_weight=1,\n",
    "                               gamma=0.0, subsample=0.8, colsample_bytree=0.8, objective='reg:squarederror',\n",
    "                               nthread=4, scale_pos_weight=1, seed=27),\n",
    "    param_distributions=param_test, scoring='neg_mean_squared_error', n_jobs=4, cv=5,\n",
    "    random_state=27, n_iter=5\n",
    ")\n",
    "rsearch.fit(X, y)\n",
    "rsearch.best_params_, rsearch.best_score_"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:35.502730Z",
     "start_time": "2024-04-15T12:48:33.601817700Z"
    }
   },
   "id": "c77efe8222f5224"
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "outputs": [
    {
     "data": {
      "text/plain": "({'reg_lambda': 0}, -552.9720921065234)"
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''n_estimators的最优参数为200，max_depth的最优参数为4，min_child_weight的最优参数为1，gamma的最优参数为0.0,subsample的最优参数为0.8，colsample_bytree的最优参数为0.8,，学习率最优参数为0.05，L1正则化参数为0.05，调整L2正则化参数'''\n",
    "# 定义正则化参数lambda的范围\n",
    "param_test = {'reg_lambda': [0, 0.001, 0.005, 0.01, 0.05]}\n",
    "\n",
    "# 创建并配置 RandomizedSearchCV 对象\n",
    "rsearch = RandomizedSearchCV(\n",
    "    estimator=xgb.XGBRegressor(learning_rate=0.05, n_estimators=200, max_depth=4, min_child_weight=1,\n",
    "                               gamma=0.0, subsample=0.8, colsample_bytree=0.8, reg_alpha=0.05,\n",
    "                               objective='reg:squarederror', nthread=4, scale_pos_weight=1, seed=27),\n",
    "    param_distributions=param_test, scoring='neg_mean_squared_error', n_jobs=4, cv=5,\n",
    "    random_state=27, n_iter=5\n",
    ")\n",
    "rsearch.fit(X, y)\n",
    "rsearch.best_params_, rsearch.best_score_\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:37.425385200Z",
     "start_time": "2024-04-15T12:48:35.502730Z"
    }
   },
   "id": "53487a4fdc39d7f0"
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "outputs": [],
   "source": [
    "'''n_estimators的最优参数为200，max_depth的最优参数为4，min_child_weight的最优参数为1，gamma的最优参数为0.0,subsample的最优参数为0.8，colsample_bytree的最优参数为0.8,，学习率最优参数为0.05，L1正则化参数为0.05，L2正则化参数是0，建立一个带参数的xgboost回归模型'''\n",
    "xgb_model = xgb.XGBRegressor(learning_rate=0.05, n_estimators=200, max_depth=4, min_child_weight=1, gamma=0.0, subsample=0.8, colsample_bytree=0.8, reg_alpha=0.05, reg_lambda=0, objective='reg:squarederror', nthread=4, scale_pos_weight=1, seed=27)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:37.489549Z",
     "start_time": "2024-04-15T12:48:37.430363700Z"
    }
   },
   "id": "aaff68030c24a781"
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "outputs": [],
   "source": [
    "'''拟合模型，并使用训练集进行预测，将预测结果存储在变量 y_pred 中，小于零的值替换为0'''\n",
    "xgb_model.fit(X, y)\n",
    "y_pred = xgb_model.predict(df_test)\n",
    "y_pred = np.where(y_pred<0, 0, y_pred)"
   ],
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:37.654973200Z",
     "start_time": "2024-04-15T12:48:37.447456800Z"
    }
   },
   "id": "c229bebd8749dcc8"
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "outputs": [],
   "source": [
    "'''将列标签修改为y，并增加列标签id，从8001开始'''\n",
    "df_test['y'] = y_pred\n",
    "df_test['id'] = range(8001, 8001+len(df_test))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:37.666994700Z",
     "start_time": "2024-04-15T12:48:37.653191100Z"
    }
   },
   "id": "b85630e144a39588"
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "outputs": [],
   "source": [
    "'''调整列标签顺序'''\n",
    "df_test = df_test[['id', 'y']]"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:37.669134900Z",
     "start_time": "2024-04-15T12:48:37.660108200Z"
    }
   },
   "id": "734f8b740cac0065"
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "outputs": [],
   "source": [
    "'''导出数据至my_XGB_prediction.csv文件'''\n",
    "df_test.to_csv('./Share_Bike_Data/Output/XGBoost_RandomizedSearch.csv', index=False)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-15T12:48:37.691016400Z",
     "start_time": "2024-04-15T12:48:37.666994700Z"
    }
   },
   "id": "d005d21385502086"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
